package br.com.financas.controle;

import br.com.financas.beans.Pessoa;
import br.com.financas.daos.PessoaDao;
import java.io.IOException;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.RequestScoped;
import javax.faces.context.FacesContext;
import javax.faces.event.AjaxBehaviorEvent;
/**
 *
 * @author Denis
 */
@ManagedBean
@RequestScoped

public class PessoaMB {
    private Pessoa pessoa = new Pessoa();
    PessoaDao pessoaDao = new PessoaDao();
    List<Pessoa>login;
    private String ConfirmaSenha;
    
    public PessoaMB(){
    }
     Pessoa p = (Pessoa)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user"); //capturando o id do usuario logado
     
    public void cadastroPessoa(AjaxBehaviorEvent event){
        Pessoa validarCadastro = pessoaDao.validaCadastro(pessoa);
        String msg;
        if(validarCadastro==null){
            pessoaDao.addPessoa(pessoa);
            pessoa.setEmail(null);
            pessoa.setSenha(null);
                msg = "Cadastro Realizado Com Sucesso";
        }else{
                msg = "Já Existe um Usuário Cadastrado com este Email";
        }    
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(msg));
    }
    public void atualizarCadastro(AjaxBehaviorEvent event){
        String msg;
        pessoaDao.atualizar(pessoa,p);
        msg="Atualizado com Sucesso";
        pessoa.setNome(null);  
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(msg));
    }
    public void atualizarSenha(AjaxBehaviorEvent event){
        String msgSenha;
        if(pessoa.getSenha().equals(ConfirmaSenha)){
             pessoaDao.atualizarSenha(pessoa, p);
             msgSenha = "Senha Alterada Com Sucesso";
        }else{
             msgSenha = "As Senhas não Conferem";
        }
        FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(msgSenha));
    }
    public String validarLogin(){
        Pessoa validar = pessoaDao.login(pessoa);
        if (validar!=null){
            FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("user",validar);
            Pessoa p = (Pessoa)  FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user");
                    return "sucesso";
        } else {
        FacesContext.getCurrentInstance().addMessage(null, 
          new FacesMessage(FacesMessage.SEVERITY_WARN,
              "Usuário ou Senha Inválido",""));
            return "erro";
        }
    }
    public void logout() throws IOException{
       FacesContext.getCurrentInstance().getExternalContext().getSessionMap().clear();
       FacesContext.getCurrentInstance().getExternalContext().redirect("index.xhtml");
    }
    public Pessoa getPessoa() {
        if((Pessoa)  FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user") != null){
            pessoa = (Pessoa)  FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user"); //capturando o id do usuario logado
        }
        return pessoa;
    }
    public void setPessoa(Pessoa pessoa) {
        this.pessoa = pessoa;
    }

    public String getConfirmaSenha() {
        return ConfirmaSenha;
    }

    public void setConfirmaSenha(String ConfirmaSenha) {
        this.ConfirmaSenha = ConfirmaSenha;
    }
}